package com.agri.dto;

import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.math.BigDecimal;

/**
 * 农产品数据传输对象
 * 用于前端与后端之间的农产品数据交互
 *
 * @author Agri-Fin-Sale Team
 * @since 2025-10-31
 */
@Data
public class CropDTO {

    /**
     * 农产品ID，更新时必填
     */
    private Long id;

    /**
     * 农产品名称
     */
    @NotBlank(message = "农产品名称不能为空")
    @Size(max = 100, message = "农产品名称长度不能超过100个字符")
    private String cropName;

    /**
     * 农产品编码，唯一标识
     */
    @NotBlank(message = "农产品编码不能为空")
    @Size(max = 50, message = "农产品编码长度不能超过50个字符")
    private String cropCode;

    /**
     * 分类ID
     */
    @NotNull(message = "分类ID不能为空")
    private Long categoryId;

    /**
     * 学名
     */
    @Size(max = 200, message = "学名长度不能超过200个字符")
    private String scientificName;

    /**
     * 生长周期
     */
    @Size(max = 50, message = "生长周期长度不能超过50个字符")
    private String growthCycle;

    /**
     * 季节性
     */
    @Size(max = 50, message = "季节性长度不能超过50个字符")
    private String seasonality;

    /**
     * 单位产量
     */
    private BigDecimal yieldPerUnit;

    /**
     * 产量单位
     */
    @Size(max = 20, message = "产量单位长度不能超过20个字符")
    private String unit;

    /**
     * 市场价格
     */
    private BigDecimal marketPrice;

    /**
     * 产品描述
     */
    @Size(max = 1000, message = "产品描述长度不能超过1000个字符")
    private String description;

    /**
     * 产品图片URL
     */
    @Size(max = 255, message = "图片URL长度不能超过255个字符")
    private String imageUrl;

    /**
     * 状态：0-下架，1-上架
     */
    private Integer status;
}